home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / mcu11 / an1010.arc / EELOAD.BAS next >
BASIC Source File  |  1987-05-12  |  5KB  |  121 lines

  1. 10  '  *******  EELOAD.BAS  20/3/87    Version 1.0 *******'
  2. 20 ' Written by R.Soja, Motorola East Kilbride'
  3. 30 ' Motorola Copyright 1987'
  4. 40 ' This program downloads S record file to the MC68HC11 through special'
  5. 50 ' bootstrap program, designed to program either internal or external '
  6. 60 ' EEPROM in the 68HC11's memory map'
  7. 70 ' The loader can also verify memory against an S record file.'
  8. 80 ' Downloaded data is optionally echoed on terminal.'
  9. 90 ' ==================================
  10. 100 CR$=CHR$(13)
  11. 110 MIN$=CHR$(32)
  12. 120 MAX$=CHR$(127)
  13. 130 ERM$="Can't find "
  14. 140 LOADER$="EEPROGIX.BOO"
  15. 150 CLRLN$=SPACE$(80)
  16. 160 VER$="1.0": 'Version number of EELOAD'
  17. 170 ERRTOT%=0:  'Number of errors found by verify operation'
  18. 180 CLS
  19. 190 PRINT "  <<<<<<<<          EELOAD Version ";VER$;"                     >>>>>>>>"
  20. 200 PRINT "  <<<<<<<< 68HC11 Internal/External EEPROM loader/verifier >>>>>>>>"
  21. 210 PRINT
  22. 220 PRINT "==>  Before continuing, ensure 68HC11 is in bootstrap mode,"
  23. 230 PRINT "     RESET is off, and COM1 or COM2 is connected to the SCI"
  24. 240 PRINT
  25. 250 ' First make sure loader program is available'
  26. 260 ON ERROR GOTO 880
  27. 270 OPEN LOADER$ FOR INPUT AS #2
  28. 280 CLOSE #2
  29. 290 ON ERROR GOTO 0
  30. 300 CHAN$="0"
  31. 310 ROW=CSRLIN: 'Store current line number'
  32. 320 WHILE CHAN$<>"1" AND CHAN$<>"2"
  33. 330   GOSUB 1070
  34. 340   LINE INPUT "Enter COM channel number (1/2):",CHAN$
  35. 350 WEND
  36. 360 CM$="COM"+CHAN$
  37. 370 ' Now set baud rate to 1200 and load EEPROG through boot loader'
  38. 380 ' by executing DOS MODE and COPY commands'
  39. 390 SHELL "MODE "+CM$+":1200,N,8,1"
  40. 400 SHELL "COPY "+LOADER$+" "+CM$
  41. 401 GOSUB 1070
  42. 402 FOR I%=1 TO 4:PRINT CLRLN$;:NEXT I%:PRINT: 'Clear DOS commands from screen'
  43. 410 ECHO$=" "
  44. 420 WHILE ECHO$<>"Y" AND ECHO$<>"N"
  45. 430   GOSUB 1070
  46. 440   LINE INPUT "Do you want echo to screen (Y/N):",ECHO$
  47. 450 WEND
  48. 470 ROW=CSRLIN: 'Store current line number'
  49. 480 EEOPT$=" ": 'Initialise option char'
  50. 490 WHILE EEOPT$<>"X" AND EEOPT$<>"I" AND EEOPT$<>"V"
  51. 500   GOSUB 1070
  52. 510   LINE INPUT "Select Internal,eXternal or Verify EEPROM option (I/X/V):",EEOPT$
  53. 520 WEND
  54. 530 OPT$="Verify"
  55. 540 IF EEOPT$="I" THEN OPT$="Internal"
  56. 550 IF EEOPT$="X" THEN OPT$="External"
  57. 560 ROW=CSRLIN: 'Store current line position in case of file error'
  58. 570 RXERR=0:    'Initialise number of RX errors allowed'
  59. 580 ON ERROR GOTO 910
  60. 590 GOSUB 1070
  61. 600 IF OPT$="Verify" THEN INPUT "Enter filename to verify: ",F$ ELSE INPUT "Enter filename to download:",F$
  62. 610 CLOSE
  63. 620 OPEN F$ FOR INPUT AS #2
  64. 630 ON ERROR GOTO 0
  65. 640 'COM1 or 2 connected to SCI on HC11'
  66. 650  OPEN CM$+":9600,N,8,1" AS #1
  67. 660 'Establish contact with HC11 by sending CR char & waiting for echo'
  68. 670 ON ERROR GOTO 860: 'Clear potential RX error'
  69. 680 PRINT #1,CR$;
  70. 690 GOSUB 990: 'Read char into B$'
  71. 700 'Transmit Internal,External or Verify EEPROM option char to 68HC11'
  72. 710 PRINT #1,EEOPT$;:GOSUB 990:              'No echo to screen'
  73. 720 ON ERROR GOTO 930
  74. 730 PRINT "Starting download of <";F$;"> to: ";OPT$;" Eeprom"
  75. 732 IF ECHO$="Y" THEN E%=1 ELSE E%=0
  76. 734 IF EEOPT$="V" THEN V%=1 ELSE V%=0
  77. 740 WHILE NOT EOF(2)
  78. 750  INPUT #2,S$
  79. 751  L%=LEN(S$)
  80. 752  FOR I%=1 TO L%
  81. 760      PRINT #1,MID$(S$,I%,1);:GOSUB 990:IF E% THEN PRINT B$;
  82. 770      IF V% THEN GOSUB 1030:IF C$<>"" THEN PRINT ":";HEX$(ASC(C$));
  83. 785  NEXT I%
  84. 787  IF E% THEN PRINT
  85. 790 WEND
  86. 795 PRINT
  87. 800 PRINT "Download Complete"
  88. 810 IF V% THEN PRINT ERRTOT%;" error(s) found"
  89. 820 CLOSE #2
  90. 830 SYSTEM
  91. 840 END
  92. 850 ' -----------------'
  93. 860 IF RXERR>5 THEN 940 ELSE RXERR=RXERR+1:RESUME 610
  94. 870 ' -----------------'
  95. 880 PRINT:PRINT ERM$;LOADER$:PRINT "Program aborted"
  96. 890 GOTO 830
  97. 900 ' -----------------'
  98. 910 PRINT ERM$;F$;SPACE$(40)
  99. 920 RESUME 580
  100. 930 '-----------------'
  101. 940 PRINT:PRINT "Communication breakdown: Download aborted"
  102. 950 GOTO 820
  103. 960 '--------------------'
  104. 970 '--SUB waits for received character, with time limit'
  105. 980 '--    returns with char in B$, or aborts if time limit exceeded'
  106. 990 T0%=0:WHILE LOC(1)=0:IF T0%>100 THEN 940 ELSE T0%=T0%+1:WEND
  107. 1000 B$=INPUT$(1,#1):RETURN
  108. 1010 '--------------------'
  109. 1020 '--SUB waits for received character, with time limit'
  110. 1025 '--    returns with char in C$, or null in C$ if time limit exceeded'
  111. 1030 T0%=0:C$="":WHILE LOC(1)=0 AND T0%<1:T0%=T0%+1:WEND
  112. 1040 IF LOC(1)>0 THEN C$=INPUT$(1,#1):ERRTOT%=ERRTOT%+1
  113. 1050 RETURN
  114. 1060 '--------------------'
  115. 1070 '--SUB Clear line '
  116. 1080 LOCATE ROW,1,1:PRINT CLRLN$
  117. 1090 LOCATE ROW,1,1:RETURN
  118. 1100 '--------------------'
  119. CATE ROW,1,1:RETURN
  120. 1100 '--------------------'
  121.